<?php
class OLM_Normal
{
	/* 
	*function：计算两个日期相隔多少年，多少月，多少天 
	*param string $date1[格式如：2011-11-5] 
	*param string $date2[格式如：2012-12-01] 
	*return array array('年','月','日'); 
	*/ 
	static function diffDate($date1,$date2)
	{ 
		if(strtotime($date1)>strtotime($date2))
		{ 
			$tmp=$date2; 
			$date2=$date1; 
			$date1=$tmp; 
		} 
		
		list($Y1,$m1,$d1)=explode('-',$date1); 
		list($Y2,$m2,$d2)=explode('-',$date2); 
		$Y=$Y2-$Y1; 
		$m=$m2-$m1; 
		$d=$d2-$d1; 
		
		if($d<0)
		{ 
			$d+=(int)date('t',strtotime("-1 month $date2")); 
			$m--; 
		} 
		
		if($m<0)
		{ 
			$m+=12; 
			$y--; 
		} 
		return array('year'=>$Y,'month'=>$m,'day'=>$d); 
	}
	
	/**
	*
	*计算两个日期相隔多少月
	*/
	static function getMonthNum($date1,$date2)
	{    
		$date1_stamp=strtotime($date1);    
		$date2_stamp=strtotime($date2);    
		list($date_1['y'],$date_1['m']) = explode("-",date('Y-m',$date1_stamp));    
		list($date_2['y'],$date_2['m']) = explode("-",date('Y-m',$date2_stamp));    
		return abs($date_1['y']-$date_2['y'])*12 +$date_2['m']-$date_1['m']; 
	}   

	/**
	 * PHP计算两个时间段是否有交集（边界重叠不算）
	 *
	 * @param string $beginTime1 开始时间1
	 * @param string $endTime1 结束时间1
	 * @param string $beginTime2 开始时间2
	 * @param string $endTime2 结束时间2
	 * @return bool
	 * @author blog.snsgou.com
	 */
	static function is_time_cross($beginTime1 = '', $endTime1 = '', $beginTime2 = '', $endTime2 = '')
	{
		$status = $beginTime2 - $beginTime1;
		if ($status > 0)
		{
			$status2 = $beginTime2 - $endTime1;
			if ($status2 > 0)
			{
				return false;
			}elseif ($status2 < 0)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
		elseif($status < 0)
		{
			$status2 = $endTime2 - $beginTime1;
			if ($status2 > 0)
			{
				return true;
			}
			else if ($status2 < 0)
			{
				return false;
			}
			else
			{
				return false;
			}
		}
		else
		{
			$status2 = $endTime2 - $beginTime1;
			if ($status2 == 0)
			{
				return false;
			}
			else
			{
				return true;
			}
		}
	}
}

